package study.eventlisten.interfaceimpl;

import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;

/**
 * 对于 Spring 容器的一些事件，可以监听并且触发相应的方法。通常的方法有 2 种，ApplicationListener 接口和@EventListener 注解。
 * 这个interfaceimpl的包下是实现ApplicationListener接口的处理方式
 * 当启动应用的时候，可以看到相应的一些日志  触发了spring默认的一些事件。
 */
/*@Component
public class MyEventListener implements ApplicationListener<ApplicationEvent> {

    @Override
    public void onApplicationEvent(ApplicationEvent event) {
        System.out.println("事件触发：" + event.getClass().getName());
    }
}*/

/**
 * 自定义事件以及监听
 * 需要定义一下监听器，自己定义的监听器需要实现ApplicationListener，
 * 同时泛型参数要加上自己要监听的事件Class名，在重写的方法onApplicationEvent中，添加自己的业务处理：
 */
@Component
public class MyEventListener implements ApplicationListener<MyEvent> {

    @Override
    public void onApplicationEvent(MyEvent event) {
        System.out.println("非注解监听器：" + event.getMsg());
    }

}
